// Hooks钩子函数
// 懒加载公共方法
import { useIntersectionObserver } from '@vueuse/core'
import { ref } from 'vue'

// /**
//  * 懒加载函数
//  * @param {function} apiFn API函数
//  * @returns
//  */
export const useLazyData = (apiFn, params) => {
  const target = ref(null)
  const res = ref(null)
  const { stop } = useIntersectionObserver(target, async ([{ isIntersecting }]) => {
    if (isIntersecting) { // isIntersecting返回一个布尔值 当判断组件到达视口区域 isIntersecting为true
      stop() // 停止 直到到达过视口区域 此组件只加载这一次
      const result = await apiFn(params) // 调用接口
      res.value = result
    }
  })
  return {
    target,
    res
  }
}
